const db = require('../db/index')

// 生成token的对象
const jwt = require('jsonwebtoken')

// 对密码进行一个加密操作
const bcrypt = require('bcryptjs')

// 引入配置的对象
const config = require('../config')


//  用户的注册流程
exports.regUser = function(req, res) {

    // 1. 检测表单数据是否合法
    console.log(req.body)
    const userinfo = req.body

    // 2. 检测用户名是否被占用
    const sql = "select * from ev_users where username = ?"

    db.query(sql, userinfo.username, (err, results) => {
        if (err) {
            return res.cc(err)
        }

        console.log(results);
        if (results.length !== 0) {
            return res.cc('用户已经存在 ！')
        } else {
            // 3. 对密码进行加密处理
            userinfo.password = bcrypt.hashSync(userinfo.password, 10)
            console.log(userinfo);

            // 4. 插入新用户
            const sqlInsert = 'insert into ev_users set ?'
            db.query(sqlInsert, userinfo, function(err, result) {
                if (err) { return res.cc(err) }
                console.log(result);
                if (result.affectedRows === 1) {
                    res.cc('注册用户成功 ！first', 0)
                } else {
                    res.cc('insert failed !')
                }
            })
        }
    })
}

exports.login = function(req, res) {

    // 1. 检测表单数据是否合法
    // 2. 根据用户名查询用户的数据
    let { username, password } = req.body

    const sql = 'select * from ev_users where username = ?'
    db.query(sql, username, (err, rows) => {
        if (err) return res.cc(err)
        if (rows.length !== 1) {
            return res.cc('用户不存在 ！')
        }
        // 3. 判断用户输入的密码是否正确
        // 用户输入密码 同 数据库里面的密码进行比较
        console.log(password, rows[0].password);
        const flag = bcrypt.compareSync(password, rows[0].password)
        if (!flag) {
            return res.cc('用户不存在或密码错误  ！')
        }
        // 4. 生成 JWT 的 Token 字符串
        // 删除 敏感个人信息
        const user = {
            ...rows[0],
            password: '',
            user_pic: ''
        }
        const token = 'Bearer ' + jwt.sign(user, config.jwtKey, { expiresIn: '10h' })
        console.log(token);
        res.send({
            status: 0,
            message: '用户登录成功  ！',
            token,
        })
    })
}